package cn.serein.charging.order.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * 面试题
 * @Component 和  @Configuration 注解的区别
 * 这两个注解都是让 springIOC容器帮我们创建和管理Bean

 * @Configuration 注解修饰的类，并且该注解中的 proxyBeanMethods 属性的值为 true（默认的），
 * 则会使用cglib动态代理，为这个 bean 创建一个代理类，该代理类会拦截所有被 @Bean 修饰的方法，
 * 在拦截的方法逻辑中，会从容器中返回所需要的单例对象。
 * @Component 注解修饰的类，则不会为这个 bean 创建一个代理类。
 * 那么我们就会直接执行用户的方法，所以每次都会返回一个新的对象。
 *
 */
@Configuration
public class RestTemplateConfiguration {

    /**
     * @Bean注解
     * 高所IOC容器，创建一个Bean对象，它的类型是 RestTemplate
     *  具体创建方法  RestTemplate()
     * @return
     */
    @Bean
    public RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate;
    }
}
